// 把问题转换成：找出最长的子数组，长度正好等于sum-x
// 最后再用len-求出的长度ret，就可以等到最终结果
class Solution {
    public int minOperations(int[] nums, int x) {
        int ret = -1, left = 0, right = 0, sum = 0, count = 0;
        int len = nums.length;
        for (int num : nums) {
            sum += num; // 数组总和
        }

        int target = sum - x; // 中间段的目标总和
        if (target < 0) return ret; // 优化

        while (right < len) {
            count += nums[right]; // 进窗口
            while (count > target) {
                count -= nums[left]; // 判断，出窗口
                left++;
            }
            if (count == target) {
                ret = Math.max(ret, right - left + 1); // 更新结果
            }
            right++;
        }
        if (ret == -1) return ret;
        return len - ret;
    }
}